Waking a link layer based on data contained in a network packet

ABSTRACT

The present invention extends to methods, systems, and computer program product for waking a link layer based on data included in a network packet. A sending computer system and a receiving computer system are connected to a common network, such as, for example, an IEEE 1394 network. A physical layer at the receiving computer system receives a network packet from the sending computer system. The physical layer parses a plurality of bytes of packet data contained in the received network packet. The receiving computer system compares at least a portion of the packet data to rule data in a physical layer rule register. Based on the results of the comparison, it is determined if the physical layer is to assert a link on signal that, when received at a corresponding link layer, wakes the corresponding link layer.

BACKGROUND OF THE INVENTION

1. The Field of the Invention

The present invention relates to network communication technology, andmore specifically, to mechanisms for waking a link layer based on datacontained in a network packet.

2. Background and Relevant Art

Computer systems and related technology, such as, for example, consumerelectronic devices, affect many aspects of society. Indeed, the computersystem's ability to process information has transformed the way we liveand work. Computer systems now commonly perform a host of tasks (e.g.,word processing, scheduling, and database management) that prior to theadvent of the computer system were performed manually. More recently,computer systems have been coupled to one another and to otherelectronic devices to form both wired and wireless computer networksover which the computer systems and other electronic devices cantransfer electronic data. As a result, many tasks performed at acomputer system (e.g., voice communication, accessing electronic mail,controlling home electronics, web browsing) include electroniccommunication with one or more other computer systems or otherelectronic devices via wired and/or wireless computer networks.

When computer systems communicate electronically, electronic data willoften pass through a protocol stack that performs operations on theelectronic data (e.g., packetizing, routing, flow control). The OpenSystem Interconnect (“OSI”) model is an example of a networkingframework for implementing a protocol stack. The OSI model breaks downthe operations for transferring electronic data into seven distinct“layers,” each designated to perform certain operations in the datatransfer process. While protocol stacks can potentially implement eachof the layers, many protocol stacks implement only selective layers foruse in transferring electronic data across a network.

When data is received from a network it enters the physical layer and ispassed up to higher intermediate layers and then eventually received atan application layer. The physical layer, the lower most layer, isresponsible for converting electrical impulses, light, or radio wavesinto a bit stream and vice versa. On the other hand, when data istransmitted from a computing system, it originates at the applicationlayer and is passed down to intermediate lower layers and then onto anetwork. The application layer, the upper most layer, is responsible forsupporting applications and end-user processes, such as, for example,electronic conferencing software, electronic mail clients, web browsers,etc.

An intermediate layer incorporated by most protocol stacks is the Linklayer. The Link layer is typically a layer that is situated immediatelyabove the physical layer in a protocol stack. The Link layer decodesdata packets (received from higher layers) into bit streams for use bythe physical layer and encodes bit streams (received from the physicallayer) into data packets for use by higher layers. One particularstandard for implementing a physical layer and corresponding link layeris the Institute of Electrical and Electronics Engineers (“IEEE”) 1394external bus standard (often referred to as “FireWire”). IEEE 1394 canbe used to couple consumer electronic devices, such as, for example,digital video camera, set-top boxes, etc., and computer systems(hereinafter collectively referred to as “1394 devices”) to one anotherto facilitate the exchange of electronic data. Networks based on theIEEE 1394 standard have relatively high data transfer rates (up to 800Megabits per second) and can deliver data isochronously. Thesecharacteristics make IEEE 1394 well suited for delivering real-timeaudio/video data that require synchronization between audio and videochannels.

Many 1394 devices can also be configured to transition into a low powermode (or sleep mode) to conserve power resources. Transitioning into lowpower mode can occur after a specified time period of inactivity or asthe result of receiving an appropriate command. When a 1394 device isoperating in low power mode, the physical layer at the 1394 device mayexchange timing data (e.g., electrical signaling) with physical layersat other 1394 devices connected to a common network. However, whenoperating in low power mode the link layer is essentially inactive andthe physical layer does not exchange data with the link layer. When apacket is received, the 1394 device checks the packet to determinewhether the packet is a physical layer packet (often referred to as a“PHY packet”) or a primary packet (a packet containing data for upperlayers of a corresponding protocol stack). However, aside fromdetermining whether a packet is a PHY packet or a primary packet, thephysical layer typically includes little, if any, ability to parse datacontained in a received packet.

When the physical layer determines that a received packet is a primarypacket, the packet is discarded. This conserves energy since the upperlayers do not process data contained in the primary packet.Unfortunately, there is always some chance that a received primarypacket contains data directed to the upper layers of the correspondingprotocol stack. For example, a primary packet may contain data for auser-interface at a 1394 device that is operating in a low power mode.However, since the physical layer discards the primary packet, the upperlayers never receive the data contained in the primary packet.

A 1394 device can transition out of a low power mode as a result oflocal input received at the 1394 device. For example, a user of a 1394VCR device can operate the controls of the 1394 VCR device (e.g.,pressing the play button) to transition the 1394 VCR device out of a lowpower mode. A 1394 device can also transition out of a low power mode inresponse to receiving a wake packet. A wake packet is a special PHYpacket that indicates to the physical layer that the physical layershould activate the link layer. When the physical layer receives a wakepacket, the physical layer wakes the link layer (e.g., asserting aLINK_ON signal to the link layer and a PME# signal to PCI Bus), from thelow power state.

A device manager at one of the 1394 devices connected to a network canmanage when wake packets are sent to other 1394 devices. For example,when a first 1394 device is to send a network packet to second 1394device, the device manager sends a special wake packet to the second1394 device to activate the link layer at the second 1394 device. Whenthe network packet is received at the second 1394 device, the physicallayer determines that the received network packet is a network packetand that the link layer is active. Accordingly, the physical layertransfers the data packet to the link layer. However, there is alwayssome chance that a device manager will malfunction or will otherwisefail to appropriately supply a wake packet to a 1394 device operating ina low power mode. Accordingly, systems, methods, and computer programproducts for waking a link layer based on data contained in a primarypacket would be advantageous.

BRIEF SUMMARY OF THE INVENTION

The foregoing problems with the prior state of the art are overcome bythe principles of the present invention, which are directed towards,methods, systems, and computer program products for waking a link layerbased on data contained in a network packet. A receiving computer systemor receiving consumer electronics device (hereinafter collectivelyreferred to as a “receiving computer system”) and a sending computersystem or sending consumer electronics device (hereinafter collectivelyreferred to as a “sending computer system”) are connected to a commonnetwork, such as, for example, an Institute of Electrical andElectronics Engineers (“IEEE”) 1394 network. A physical layer at thereceiving computer system receives a network packet from the sendingcomputer system. The physical layer parses a plurality of bytes (e.g.,in increments of four bytes or “quadlets”) of packet data contained inthe received network packet. For example, the physical layer can parse aportion of a received primary packet that includes a transaction codeand/or a destination offset.

The receiving computer system compares at least a portion of the packetdata to rule data in a physical layer rule register at the receivingcomputer system. In some embodiments, a bit mask (e.g., in a physicallayer mask register) is applied to the packet data to mask the at leasta portion of packet data that is to be compared to the rule data. Anappropriate interface, such as, for example, an Open Host ControllerInterface (“OHCI”), can be used to configure rule and mask registers.

The receiving computer system determines if the physical layer is toassert a link on signal based on the results of the comparison. Forexample, when results of the comparison indicate that the at least aportion of packet data matches the rule data, it is determined that thephysical layer is to assert the link on signal. On the other hand, whenthe results of the comparison indicate that the at least a portion ofpacket data does not match the rule data, it is determined that thephysical layer is not to assert the link on signal. Accordingly, a useror administrator can configure a IEEE 1394 physical layer to wake acorresponding IEEE 1394 link layer based on the contents of a receivedasynchronous, isochronous, or cycle start packet. Configuration can beperformed at the receiving computer system or remotely from a computersystem that is network connectable to the receiving computer system.

Additional features and advantages of the invention will be set forth inthe description that follows, and in part will be obvious from thedescription, or may be learned by the practice of the invention. Thefeatures and advantages of the invention may be realized and obtained bymeans of the instruments and combinations particularly pointed out inthe appended claims. These and other features of the present inventionwill become more fully apparent from the following description andappended claims, or may be learned by the practice of the invention asset forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and otheradvantages and features of the invention can be obtained, a moreparticular description of the invention briefly described above will berendered by reference to specific embodiments thereof which areillustrated in the appended drawings. Understanding that these drawingsdepict only typical embodiments of the invention and are not thereforeto be considered to be limiting of its scope, the invention will bedescribed and explained with additional specificity and detail throughthe use of the accompanying drawings in which:

FIG. 1 illustrates an example of computer system architecture andassociated modules and data structures for waking a link layer based ondata included in a network packet in accordance with the principles ofthe present invention.

FIG. 2 illustrates a flowchart of an example method for waking a linklayer based on data included in a network packet in accordance with theprinciples of the present invention.

FIG. 3 illustrates a suitable operating environment for the principlesof the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention extends to methods, systems, and computer programproducts for waking a link layer based on data included in a networkpacket. A sending computer system or sending consumer electronics deviceand a receiving computer system or receiving consumer electronics deviceare connected to a common network, such as, for example, an Institute ofElectrical and Electronics Engineers (“IEEE”) 1394 network. A physicallayer at the receiving computer system or receiving consumer electronicsdevice receives a network packet from the sending computer system orsending consumer electronics device. The physical layer parses aplurality of bytes of packet data contained in the received networkpacket. The receiving computer system or receiving consumer electronicsdevice compares at least a portion of the received packet data to ruledata in a physical layer rule register. Based on the results of thecomparison, it is determined if the physical layer is to assert a linkon signal that, when received at a corresponding link layer, wakes thecorresponding link layer.

Embodiments of the present invention may comprise a special purpose orgeneral-purpose computer including various computer hardware and/orfirmware and/or software, as discussed in greater detail below. Inparticular, embodiments within the scope of the present inventioninclude computer-readable media for carrying or havingcomputer-executable instructions or data structures stored thereon. Suchcomputer-readable media can be any available media that can be accessedby a general purpose or special purpose computer. By way of example, andnot limitation, such computer-readable media can comprise RAM, ROM,EEPROM, CD-ROM or other physical storage media, such as optical diskstorage, magnetic disk storage or other magnetic storage devices, or anyother medium which can be used to carry or store desired program codemeans in the form of computer-executable instructions or data structuresand which can be accessed by a general purpose or special purposecomputer.

When information is transferred or provided over a network or anothercommunications connection (either hardwired, wireless, or a combinationof hardwired or wireless) to a computer, the computer properly views theconnection as a computer-readable medium. Thus, any such connection isproperly termed a computer-readable medium. Combinations of the aboveshould also be included within the scope of computer-readable media.Computer-executable instructions comprise, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose processing device, such as a GPU, to perform acertain function or group of functions.

Although not required, the invention will be described in the generalcontext of computer-executable instructions, such as program modules,being executed by computer systems. Generally, program modules includeroutines, programs, objects, components, data structures, and the like,which perform particular tasks or implement particular abstract datatypes. Computer-executable instructions, associated data structures, andprogram modules represent examples of the program code means forexecuting acts of the methods disclosed herein.

In this description and in the following claims, a “computer system” isdefined as one or more software modules, one or more hardware modules,or combinations thereof, that work together to perform operations onelectronic data. For example, the definition of computer system includesthe hardware components of a personal computer, as well as softwaremodules, such as the operating system of the personal computer. Thephysical layout of the modules is not important. A computer system mayinclude one or more computers coupled via a network. Likewise, acomputer system may include a single physical device (e.g., digitalcameras, digital video recorders, and other consumer electronicsdevices) where internal modules (e.g., a memory and processor) worktogether to perform operations on electronic data.

Computer system is further defined to include electronic logic statemachines. Electronic logic state machines can be implemented inintegrated circuits embedded in pieces of semi conducting material(e.g., silicon), which may be referred to as “chips”. Electronic logicstate machines can be implemented, for example, utilizing verylarge-scale integration (“VLSI”) and/or application specific integratedcircuits (“ASICs”). A chip including a processor and correspondinginstruction set can be viewed as an electronic logic state machine.

Those skilled in the art will appreciate that the invention may bepracticed with many types of computer system configurations, including,personal computers, laptop computers, consumer electronic devices,multi-processor systems, minicomputers, mainframe computers, and thelike. The invention may also be practiced in distributed systemenvironments where local and remote computer systems, which are linked(either by hardwired links, wireless links, or by a combination ofhardwired and wireless links) through a network, both perform tasks. Ina distributed system environment, program modules and associated datastructures may be located in both local and remote memory storagedevices.

In this description and the following claims, a “communications stack”is defined as a plurality of communication layers, including at leastphysical layer and a corresponding link layer, that interoperate totransfer data between computer systems. Communication stack is definedto include protocol stacks based around the Open Systems Interconnection(“OSI”) networking framework for implementing protocols, includingprotocol stacks that incorporate the functionality of a plurality of OSIlayers in a single layer.

In this description and in the following claims, a “PHY layer packet” isdefined as a network packet containing packet data that facilitatesappropriate signaling (electrical, timing, etc.) between physical layersat computer systems.

In this description and in the following claims, a “primary packet” isdefined as a network packet containing packet data that is to beprocessed at a communication layer above the physical layer. A primarypacket can include packet configuration information, such as, forexample, a transaction code or destination offset, that indicates howpacket data contained in the primary packet is to be processed.

Turning now to FIG. 1, FIG. 1 illustrates an example of a computersystem architecture 100 and associated modules and data structureswaking a link layer based on data contained in a network packet. Therectangular elements in computer architecture 100 (e.g., physical layer122, link layer 123, and configuration interface 128) representexecutable modules that facilitate waking a link layer (e.g., link layer123) based on data contained in a network packet. The scrolled elements(e.g., primary packet 109, packet data 112, and results 138) representdata that is processed by the executable modules to wake a link layerbased on data contained in a network packet. Accordingly, the executablemodules and scrolled elements depicted in computer architecture 100cooperatively interact to implement the principles of the presentinvention.

Within computer system architecture 100, computer system 116 isconnected to computer system 103 and computer system 107 bycorresponding links 104 and 106 respectively. Each of computer systems116, 103, and 107 can be a consumer electronics device or an electroniclogic state machine. Arrows 102 and 108 illustrate that computer system103 and computer system 107 can each be connected to additional othercomputer systems (not shown). Accordingly, it may be that computersystems 103, 107 and 116 are connected to a common network along withone or more additional other computer systems. Links 104 and 106 (aswell as links to other additional computer systems) can be a portion ofa system bus, a portion of a local area network (“LAN”), and/or aportion of a Wide Area Network (“WAN”). In some embodiments, linksconnecting the computer systems depicted in computer system architecture100 are links of an Electrical and Electronics Engineers (“IEEE”) 1394network (which hereinafter may be referred to as an “IEEE 1394network”).

Computer system 116 includes communication stack 121 that facilitatesthe compatible exchange of data with other computer systems connected toa common network with computer system 116. Physical layer 122 canconvert electrical impulses (or, when appropriate, light or radiosignals) into a bit stream for transfer to link layer 123. Physicallayer 122 can also convert a bit stream received from link layer 123into electrical impulses (or, when appropriate, light or radio signals)for transfer to another computer system. Physical layer 122 is connectedto link layer 123 by link 141. When appropriate, physical layer 122 canassert a Link On signal onto link 141 to cause link layer 123 totransition out of a reduced power mode.

Link layer 123 can parse data received from physical layer 122 todetermine how packet data is to be processed. For example, based on adestination offset and/or transaction code, link layer 123 can determineif packet data is directed to an application at computer system 116.Link layer 123 can code a bit stream for use at layers above link layer123 (e.g., application layer 126). Link layer 123 can also decode datafrom layers above link layer 123 for use at physical layer 122. Verticalellipses 124 represents that other layers (e.g., a network and transportlayer) can be included in communication stack 121. Application layer 126interfaces with applications at computer system 116 to facilitate thetransfer of data between applications (e.g., a streaming audio/videoapplication) and communication stack 121.

Computer system 116 can receive network packets from and send networkpackets to other computer systems connected to a common network. Forexample, computer system 116 can receive network packet 109 from acomputer system connected to a common IEEE 1394 network. It may be thatnetwork packet 109 is a PHY layer packet that facilitates appropriatesignaling between computer system 116 and other computer systems (e.g.,computer systems 103 and 107). Accordingly, physical layer 122 canreceive and process network packet 109 such that appropriate signalingis maintained with the other computer systems.

However, it may also be that network packet 109 is a primary packetincluding packet data that is to be processed at layers above physicallayer 122. In response to receiving a primary packet, physical layer 122can determine if link layer 123 is in a reduced power mode. When linklayer 123 is not in a reduced power mode, physical layer 122 cantransfer packet data 111 to link layer 123. When link layer 123 is in areduced power mode, such as, for example, a sleep mode, physical layer122 can determine, based at least on a portion of packet data 111, iflink layer 123 is to be transitioned out of the reduced power mode.Physical layer 122 can assert a Link On signal when it is determinedthat link layer 123 is to transition out of a reduced power mode.

Configuration interface 128, for example, an Open Host ControllerInterface (“OHCI”), can be used to configure registers utilized byphysical layer 122 and link layer 123. For example, configurationinterface 128 can be used to configure physical layer registers 131.Mask register 132 can store bit mask 133 that is utilized to maskportions of packet data parsed from a network packet. Rule register 136can store rule data (e.g., rule data 137) that is utilized to compare topacket data (e.g., masked packet data) to determine if packet datasatisfies one or more rules. Physical layer registers 131 can beconfigured locally at computer system 116. Alternately, physical layerregisters 131 can be configured remotely at other computer systemsconnected to a common network with computer system 116 by sendingappropriate commands over the common network to computer system 116.

FIG. 2 illustrates a flowchart of an example method 200 for waking alink layer based on data contained in a network data packet. The method200 will be discussed with respect to the executable modules and datastructures depicted in computer system architecture 100. The method 200includes a functional result oriented step for a physical layeridentifying packet data contained in a network packet (step 205). Step205 can include any corresponding acts for a physical layer identifyingpacket data contained in a network packet.

However, in the method illustrated in FIG. 2, step 205 includes acorresponding act of a physical layer receiving a network packet from asending computer system (act 201). Act 201 can include a physical layerat a receiving computer system receiving a network packet from a sendingcomputer system. For example, physical layer 122 can receive networkpacket 109 that was sent from another computer system connected to acommon network with computer system 116. Network packet 109 can be a PHYlayer packet or a primary packet and can be associated with an IEEE 1394network.

Step 205 includes a corresponding act of the physical layer parsing aplurality of bytes of packet data from the network packet (act 202). Act202 can include a physical layer at a receiving computer system parsinga plurality of bytes of packet data from the network packet. Forexample, physical layer 122 can parse a plurality of bytes of packetdata 111. It may that physical layer 122 parses one or more quadlets(i.e., groupings of four bytes) of packet data 111.

The number of parsed quadlets can be configured based on the desires ofa user or administrator or even a manufacturer at the time a computersystem (e.g., a digital video camera) is manufactured. When it isadvantageous to obtain more information associated with a networkpacket, the number of quadlets parsed at the physical layer can beincreased. For example, when network packet 109 is a primary packetassociated with an IEEE 1394 network, parsing three quadlets (twelvebytes) of network packet 109 can provide physical layer 122 withadditional address offset information. On the other hand, when it isadvantageous to conserve resources of the physical layer, the number ofquadlets parsed at the physical layer can be decreased.

It may be that computer system 116 is configured to wake link layer 123based on specified transaction codes included in network packets.Accordingly, when network packet 109 is a primary packet associated withan IEEE 1394 network, parsing two quadlets (eight bytes) of networkpacket 109 can provide physical layer 122 with appropriate transactioncode information. Physical layer 122 can transfer parsed packet data,such as, for example, parsed packet data 112, to physical layerregisters 131. Parsed packet data 112 can be one or more quadlets ofpacket data parsed from packet data 111.

Method 200 includes an act of comparing at least a portion of the packetdata to rule data (act 203). Act 203 can include a receiving computersystem comparing at least a portion of the packet data to rule data. Forexample, computer system 116 can compare a parsed packet data 112 torule data 137. A bit mask stored in mask register 132 can be applied toparsed packet data 112 to mask specified portions of parsed packet data112. For example, bit mask 133 can be applied to parsed packet data 112to mask specified portions of parsed packet data 112 that are ofinterest.

Resulting masked packet data can be compared to rule data stored in ruleregister 136. For example, masked packet data 134 can be compared torule data 137. Results of the comparison of masked packet data to ruledata can be generated. For example, comparing masked packet data 134 torule data 137 generates results 138. Results of the comparison of maskpacket data and rule data can be returned to the appropriate physicallayer. For example, results 138 can be returned to physical layer 122.

Method 200 includes an act of determining if the physical layer is toassert a Link On signal based on results of the comparison (act 204).Act 204 can include a receiving computer system determining if acorresponding physical layer is to assert a Link On signal based onresults of the comparison. For example, computer system 116 candetermine if physical layer 122 is to assert a Link On signal onto link141 based on results 138. When results 138 indicate that masked packetdata 134 does not satisfy rule data 137 (e.g., masked packet data 134and rule data 137 do not match), computer system 116 determines thatphysical layer 122 is not to assert a Link On signal. On the other hand,when results 138 indicate that masked packet data 134 satisfies ruledata 137 (e.g., masked packet data 134 and rule data 137 match),computer system 116 can determine that physical layer 122 is to assert aLink On signal.

In response to a determination that physical layer 122 is to assert aLink On signal, physical layer 122 can assert a Link On signal onto link141. For example, physical layer 122 can send wake command 127 to linklayer 123. In response to a Link On signal received on link 141, linklayer 123 can transition out of a reduced power mode. For example, inresponse to wake command 127, link layer 123 can transition out of areduced power mode. When appropriate, physical layer 122 then transferspacket data 111 to link layer 123. Accordingly, embodiments of thepresent invention can cause a link layer to transition out of a reducedpower mode in response to a corresponding physical layer receivingpacket data that is to be delivered to the link layer.

FIG. 3 illustrates a suitable operating environment for the principlesof the present invention. FIG. 3 and the following discussion areintended to provide a brief, general description of a suitable computingenvironment in which the invention may be implemented. With reference toFIG. 3, an example system for implementing the invention includes ageneral-purpose computing device in the form of computer system 320.

Computer system 320 includes a processing unit 321, a system memory 322,and a system bus 323 that couples various system components includingthe system memory 322 to the processing unit 321. Processing unit 321can execute computer-executable instructions designed to implementfeatures of computer system 320, including features of the presentinvention. The system bus 323 may be any of several types of busstructures including a memory bus or memory controller, a peripheralbus, and a local bus using any of a variety of bus architectures. Thesystem memory includes read only memory (“ROM”) 324 and random accessmemory (“RAM”) 325. A basic input/output system (“BIOS”) 326, containingthe basic routines that help transfer information between elementswithin the computer 320, such as during start-up, may be stored in ROM324.

The computer system 320 may also include a magnetic hard disk drive 327for reading from and writing to a magnetic hard disk 339, a magneticdisk drive 328 for reading from or writing to a removable magnetic disk329, and an optical disk drive 330 for reading from or writing toremovable optical disk 331, such as, for example, a CD-ROM or otheroptical media. The magnetic hard disk drive 327, magnetic disk drive328, and optical disk drive 330 are connected to the system bus 323 byhard disk drive interface 332, magnetic disk drive-interface 333, andoptical drive interface 334, respectively. The drives and theirassociated computer-readable media provide nonvolatile storage ofcomputer-executable instructions, data structures, program modules, andother data for computer system 320. Although the example environmentdescribed herein employs a magnetic hard disk 339, a removable magneticdisk 329 and a removable optical disk 331, other types of computerreadable media for storing data can be used, including magneticcassettes, flash memory cards, digital versatile disks, Bernoullicartridges, RAMs, ROMs, and the like.

Program code means comprising one or more program modules may be storedon the hard disk 339, magnetic disk 329, optical disk 331, ROM 324 orRAM 325, including an operating system 335, one or more applicationprograms 336, other program modules 337, and program data 338. A usermay enter commands and information into the computer system 320 throughkeyboard 340, pointing device 342, or other input devices (not shown),such as, for example, a microphone, joy stick, game pad, scanner, or thelike. These and other input devices can be connected to the processingunit 321 through serial port interface 346 coupled to system bus 323.Alternatively, input devices can be connected by other interfaces, suchas, for example, a parallel port, a game port, a universal serial bus(“USB”) port, or a Fire Wire port. A monitor 347 or other display deviceis also connected to system bus 323 via video adapter 348. Computersystem 320 can also be connected to other peripheral output devices (notshown), such as, for example, speakers and printers.

Computer system 320 is connectable to networks, such as, for example, anoffice-wide or enterprise-wide computer network, an intranet, and/or theInternet. Computer system 320 can exchange data with external sources,such as, for example, remote computer systems, remote applications,and/or remote databases over such a network.

Computer system 320 includes network interface 353, through whichcomputer system 320 receives data from external sources and/or transmitsdata to external sources. As depicted in FIG. 3, network interface 353facilitates the exchange of data with remote computer system 383 vialink 351. Link 351 represents a portion of a network, and remotecomputer system 383 represents a node of the network.

Likewise, computer system 320 includes serial port interface 346,through which computer system 320 receives data from external sourcesand/or transmits data to external sources. Serial port interface 346 iscoupled to modem 354, through which computer system 320 receives datafrom and/or transmits data to external sources. Alternately, modem 354can be a Data Over Cable Service Interface Specification (“DOCSIS”)modem or digital subscriber lines (“DSL”) modem that is connected tocomputer system 320 through an appropriate interface. However, asdepicted in FIG. 3, serial port interface 346 and modem 354 facilitatethe exchange of data with remote computer system 393 via link 352. Link352 represents a portion of a network, and remote computer system 393represents a node of the network.

While FIG. 3 represents a suitable operating environment for the presentinvention, the principles of the present invention may be employed inany system that is capable of, with suitable modification if necessary,implementing the principles of the present invention. The environmentillustrated in FIG. 3 is illustrative only and by no means representseven a small portion of the wide variety of environments in which theprinciples of the present invention may be implemented.

Modules of the present invention, as well as associated data, can bestored and accessed from any of the computer-readable media associatedwith computer system 320. For example, portions of such modules andportions of associated program data may be included in operating system335, application programs 336, program modules 337 and/or program data338, for storage in system memory 322. When a mass storage device, suchas, for example, magnetic hard disk 339, is coupled to computer system320, such modules and associated program data may also be stored in themass storage device. In a networked environment, program modules andassociated data depicted relative to computer system 320, or portionsthereof, can be stored in remote memory storage devices, such as, forexample, system memory and/or mass storage devices associated withremote computer system 383 and/or remote computer system 393. Executionof such modules may be performed in a distributed environment aspreviously described.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by the foregoing description. Allchanges that come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

1. In a receiving computer system that is communicatively coupled to anIEEE 1394 network, a method for waking a link layer at the receivingcomputer system based on data included in a network data packet, themethod comprising: an act of a physical layer receiving a network datapacket from a sending computer system, the sending computer system beingcommunicatively coupled to the IEEE 1394 network; an act of the physicallayer parsing a plurality of bytes of packet data contained in thereceived network data packet; an act of comparing at least a portion ofthe packet data to rule data in a physical layer rule register; an actof determining whether a corresponding link layer is in a reduced powermode; and an act of determining if the physical layer is to assert aLink On signal based on the results of the comparison and upondetermining that the corresponding link layer is in the reduced powermode, the Link On signal being a signal that, when received at the linklayer, wakes the corresponding link layer.
 2. The method as recited inclaim 1, wherein the act of a physical layer receiving a network datapacket comprises an act of the physical layer receiving a primarypacket.
 3. The method as recited in claim 1, wherein the act of aphysical layer receiving a network data packet comprises an act of thephysical layer receiving a PHY layer packet.
 4. The method as recited inclaim 1, wherein the act of the physical layer parsing a plurality ofbytes of packet data contained in the received network data packetcomprises an act of the physical layer parsing a plurality of bytes ofpacket data contained in a received primary packet.
 5. The method asrecited in claim 1, wherein the act of the physical layer parsing aplurality of bytes of packet data contained in the received network datapacket comprises an act of the physical layer parsing a plurality ofbytes of packet data contained in a received PHY layer packet.
 6. Themethod as recited in claim 1, wherein the act of the physical layerparsing a plurality of bytes of packet data contained in the receivednetwork data packet comprises an act of the physical layer parsing atransaction code contained in the received network data packet.
 7. Themethod as recited in claim 1, wherein the act of the physical layerparsing a plurality of bytes of packet data contained in the receivednetwork data packet comprises an act of the physical layer parsing anaddress offset contained in the received network data packet.
 8. Themethod as recited in claim 1, further comprising: an act of utilizing aconfiguration interface to configure the physical layer rule register.9. The method as recited in claim 8, wherein the act of utilizing aconfiguration interface to configure the physical layer rules registercomprises an act of utilizing an Open Host Controller Interface.
 10. Themethod as recited in claim 1, wherein the act of comparing at least aportion of the packet data to rule data in a physical layer ruleregister comprises an act of applying a bit mask to a parsed pluralityof bytes of packet data.
 11. The method as recited in claim 10, whereinthe act of applying a bit mask to a parsed plurality of bytes of packetdata comprises an act of applying a bit mask stored in a physical layermask register.
 12. The method as recited in claim 11, furthercomprising: an act of an act of utilizing a configuration interface toconfigure the physical layer mask register.
 13. The method as recited inclaim 12, wherein the act of utilizing a configuration interface toconfigure the physical layer mask register comprises an act of utilizingan Open Host Controller Interface.
 14. The method as recited in claim 1,wherein the act of comparing at least a portion of the packet data torule data in a physical layer rule register comprises an act ofcomparing a transaction code to rule data.
 15. The method as recited inclaim 1, wherein the act of comparing at least a portion of the packetdata to rule data in a physical layer rule register comprises an act ofcomparing an address offset to rule data.
 16. The method as recited inclaim 1, wherein the act of determining if the physical layer is toassert a link on signal based on the results of the comparison comprisesan act of determining that the physical layer is to assert a Link Onsignal.
 17. The method as recited in claim 16, wherein the act ofdetermining that the physical layer is to assert a Link On signalcomprises an act of determining that the at least a portion of thepacket data matches the rule data.
 18. The method as recited in claim16, further comprising: an act of asserting a Link On signal.
 19. Themethod as recited in claim 1, wherein the act of determining if thephysical layer is to assert a Link On signal based on the results of thecomparison comprises an act of determining that the physical layer isnot to assert a Link On signal.
 20. The method as recited in claim 19,wherein the act of determining that the physical layer is not to asserta Link On signal comprises an act of determining that the at least aportion of the packet data does not match the rule data.
 21. The methodas recited in claim 1, wherein the receiving computer system comprises aconsumer electronics device.
 22. The method as recited in claim 1,wherein the receiving computer system comprises an electronic logicstate machine.
 23. At a receiving computer system that iscommunicatively coupled to an IEEE 1394 network, a method for waking alink layer at the receiving computer system, the method comprising: astep for a physical layer identifying packet data contained in a networkdata packet; an act of comparing at least a portion of the packet datato rule data in a physical layer rule register; an act of determiningwhether a link layer is in a reduced power mode; and an act ofdetermining if the physical layer is to assert a Link On signal based onthe results of the comparison and upon determining that the link layeris in the reduced power mode, the Link On signal being a signal that,when received at the link layer, wakes the link layer.
 24. Acomputer-readable storage medium having computer-executable instructionsfor performing the method comprising: an act of a physical layerreceiving a network data packet from a sending computer system, thesending computer system being communicatively coupled to the IEEE 1394network; an act of the physical layer parsing a plurality of bytes ofpacket data contained in the received network data packet; an act ofcomparing at least a portion of the packet data to rule data in aphysical layer rule register; an act of determining whether acorresponding link layer is in a reduced power mode; and an act ofdetermining if the physical layer is to assert a Link On signal based onthe results of the comparison and upon determining that thecorresponding link lager is in the reduced power mode, the Link Onsignal being a signal that, when received at the link layer, wakes thecorresponding link layer.
 25. The computer-readable storage medium asrecited in claim 24, wherein an act of the physical layer parsing aplurality of bytes of packet data contained in the received network datapacket comprise an act of the physical layer at the receiving computersystem parsing a plurality of bytes of packet data contained in aprimary packet.
 26. The computer-readable storage medium as recited inclaim 24, further comprising: an act of causing a physical layer at thereceiving computer system to assert a Link On signal.